package com.itheima.other;

import com.itheima.pojo.User;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;

/**
 * @Description 自定义bean对象注册器，完成批量的bean的注册加载
 * @Created by itheima
 */
public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {

    /**
     *
     * @param importingClassMetadata 获取注解作用下的类的元数据信息
     * @param registry 注册bean信息的
     */
    @Override
    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
        //批量定义bean的定义对象 bean的定义信息核心包含：类的信息，作用域scope,是否懒加载
        AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder.rootBeanDefinition(User.class).getBeanDefinition();
        //注册bean的定义信息
        /**
         * 参数1：bean的名称
         * 参数2：bean的定义信息
         */
        registry.registerBeanDefinition("myUser",beanDefinition);
    }
}
